<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
/*
    变量提升：变量提升是JavaScript中比较奇怪的现象，它应许变量在声明之前就能被访问(只针对var)
    注意：
        let声明的变量在未声明就被访问的时候会报错，var不会(undefined而已)
        let/const不存在变量提升
        变量提升出现在相同作用域当中
 */
    console.log(num + '件');
    var num = 10
    /*
    把所有用var声明的变量提升到当前作用域的最前面(只提升声明，不提升赋值)
    相当于
    var num
    console.log(num+'件');
    num=10
    */
    function fn() {
      console.log(num);
      var num = 10
    }
    fn()
   /*
    把所有用var声明的变量提升到当前作用域的最前面(只提升声明，不提升赋值)
     相当于
     function fn(){
         var num
         console.log(num);
         num=10
       }
    */

  </script>
</body>

</html>